package com.yfp.client.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yfp.client.domain.ActivitySignIns;
import com.yfp.client.domain.dto.ActivitySignInsExchangeRecordReqDTO;
import com.yfp.client.domain.vo.ActivitySignInsExchangeRecordVO;
import com.yfp.client.domain.vo.ActivitySignInsRulesVO;
import com.yfp.client.domain.vo.ActivitySignInsVO;

import java.util.List;

/**
 *
 * @description 针对表【activity_sign_ins(打卡管理主表)】的数据库操作Service
 * @createDate 2025-01-03 17:46:13
 */
public interface ActivitySignInsService extends IService<ActivitySignIns> {

    /**
     * 获取打卡详情
     * 进行中的活动
     *
     * @return
     */
    ActivitySignInsVO getActivityDetails(Long activitySignInsId, String cityName);

    /**
     * 获取打卡详情
     *
     * @return
     */
    ActivitySignInsVO getInfo(Long id);

    /**
     * 获取奖励名称
     *
     * @param rewardId   奖励id
     * @param rewardType 兑换奖品类型:[1优惠券、2礼包、3实体商品]
     * @return
     */
    String getRewardName(Long rewardId, Integer rewardType);

    /**
     * 加入活动
     *
     * @param activitySignInsId
     */
    void joinActivity(Long activitySignInsId);

    /**
     * 领取奖励
     *
     * @param activitySignInsId
     */
    ActivitySignInsRulesVO receiveReward(Long activitySignInsId);

    /**
     * 兑换记录
     *
     * @param activitySignInsId
     */
    List<ActivitySignInsExchangeRecordVO> exchangeRecord(ActivitySignInsExchangeRecordReqDTO activitySignInsId);

    /**
     * 填充打卡信息
     *
     * @param info
     * @return
     */
    ActivitySignInsVO fillActivitySignInsInfo(ActivitySignInsVO info);

    /**
     * 填充底部按钮状态
     * [1:立即参与灰、2:立即参与、3:立即领取灰、4:立即领取、5:恭喜完成全部打卡灰]
     *
     * @param activitySignInsVO
     * @return
     */
    Integer fillButtonStatus(ActivitySignInsVO activitySignInsVO);
}
